				//directory search variables
				WIN32_FIND_DATA fd;
				HANDLE h = FindFirstFile("*.*", &fd);
 
				while(1)
				{
					//if no files on server send error message
					if(h == INVALID_HANDLE_VALUE){
						//time out loop to recieve client ack
						while(true)
						{
							FD_ZERO(&readfds);
							FD_SET(s,&readfds);

							message_frame.header = 'e'; //error no files on server
							message_frame.snwseq = serverseqnum; //send seq num

							//send error packet
							//send(s, (char *)&data_frame, sizeof(data_frame), 0);	//For TCP
							sendto(s, (char*)&message_frame, sizeof(message_frame), 0, (struct sockaddr*)&sa, sizeof(sa));

							//timeout is 300ms
							outfds = select (1 , &readfds, NULL, NULL, &timeouts);

							if (outfds) //if outfds is 1, data has been recieved
								break;
							{
								//recieve client ack to finish three way handshake
								ibytesrecv = recvfrom(s, (char*)&message_frame, sizeof(message_frame), 0, (struct sockaddr*)&sa, &len);

								//check for error
								if(ibytesrecv == SOCKET_ERROR)
									throw "Receive error in server program\n";

								//check if seqnum are the same
								if(serverseqnum == message_frame.snwseq) //if yes packet was received by client
								{
									//add 1 to seqnum
									serverseqnum = serverseqnum + 1;
									break;
								}

								//else resend packet
							}

							//if outfds is 0, no data received yet, restart loop and resend message
						}

						break; // no files found
					}

					while(true){
						FD_ZERO(&readfds);
						FD_SET(s,&readfds);

						//seqnum
						message_frame.snwseq = serverseqnum;

						//if there are files on the server
						message_frame.header = 'f'; //char f indicates first or middle file on server

						//clear data_frame.data
						memset(message_frame.data, 0, sizeof(message_frame.data));

						//place file name into packet
						strcpy_s(message_frame.data,sizeof(message_frame.data),fd.cFileName);

						//send file name to client
						//send(s, (char *)&data_frame, sizeof(data_frame), 0);	//For TCP
						sendto(s, (char*)&message_frame, sizeof(message_frame), 0, (struct sockaddr*)&sa, sizeof(sa));

						//timeout is 300ms
						outfds = select (1 , &readfds, NULL, NULL, &timeouts);

						if (outfds) //if outfds is 1, data has been recieved
						{
							//recieve client ack to finish three way handshake
							ibytesrecv = recvfrom(s, (char*)&message_frame, sizeof(message_frame), 0, (struct sockaddr*)&sa, &len);

							//check for error
							if(ibytesrecv == SOCKET_ERROR)
								throw "Receive error in server program\n";

							//check if seqnum are the same
							if(serverseqnum == message_frame.snwseq) //if yes packet was received by client
							{
								//add 1 to seqnum
								serverseqnum = serverseqnum + 1;
								break;
							}
							

							//else resend packet
						}

						//if outfds is 0, no data received yet, restart loop and resend message
					}

 
					//if no more files on server left to display
					if(FindNextFile(h, &fd) == FALSE)
					{
						while(true){

							FD_ZERO(&readfds);
							FD_SET(s,&readfds);

							//seqnum
							message_frame.snwseq = serverseqnum;
							message_frame.header = 'l'; //char l indicates no more files left on server

							//clear data_frame.data
							memset(message_frame.data, 0, sizeof(message_frame.data));

							//send packet indicating no more files left on the server
							//send(s, (char *)&data_frame, sizeof(data_frame), 0); //For TCP
							sendto(s, (char*)&message_frame, sizeof(message_frame), 0, (struct sockaddr*)&sa, sizeof(sa));

							//timeout is 300ms
							outfds = select (1 , &readfds, NULL, NULL, &timeouts);

							if (outfds) //if outfds is 1, data has been recieved
							{
								//recieve client ack to finish three way handshake
								ibytesrecv = recvfrom(s, (char*)&message_frame, sizeof(message_frame), 0, (struct sockaddr*)&sa, &len);

								//check for error
								if(ibytesrecv == SOCKET_ERROR)
									throw "Receive error in server program\n";

								//check if seqnum are the same
								if(serverseqnum == message_frame.snwseq) //if yes packet was received by client
								{
									//add 1 to seqnum
									serverseqnum = serverseqnum + 1;
									break;
								}

								//else resend packet
							}

							//if outfds is 0, no data received yet, restart loop and resend message
						}
						break;
					}
				}